Enterprise communications systems may comprise multiple instances of server application software, such as a feature server. Such applications may implement a software licensing solution to ensure that the customer's software usage is within the bounds of the purchased license entitlements. A typical licensing solution is to have the application software interface with a license server (e.g., WebLM) to acquire license permissions for the software usage of the given application instance.
One approach to implementing licensing when there are multiple application instances (e.g., servers) is to have a dedicated license server co-resident with the application software (i.e., the license server and application can be on the same physical device). A license file with the licenses assigned to the given application instance is installed on the license server for use by the application. A co-resident license server has the advantage of making the licensing solution immune to network outages. However, the disadvantage of using dedicated license servers is that it requires multiple license server instances and license files when there are multiple application instances. This complicates license management because there are multiple license servers and license files to install and manage. This also makes license sharing between application instances more difficult, because moving licenses between application instances requires intervention on behalf of an administrator to decrement one license file and increment another. In addition, depending on the license server technology used, the use of multiple dedicated license servers can make it difficult for the customer to see a single, unified view of all the licenses across their enterprise.
Another approach is to use a centralized license server that is shared by the multiple application instances. Each application interface contacts the central license server to acquire the licenses it needs based on current usage. As licenses go out of use on a given application instance, they are returned to the license server and made available for use by another application instance. This has the advantage of providing a simple licensing solution for the customer (single license server and single license file) and allows dynamic license sharing between application instances with intervention by the administrator. It also readily provides the customer with a single consolidated view of all the licenses in their enterprise. Unfortunately, if the various licensed application instances (e.g., servers) are distributed in the customer's network as is typically the case, the communication between licensed applications and the license server is subject to network outages. As a result, a customer that is fully compliant with their purchased license entitlements can experience license errors, warnings and alarms due to a network outage that prevents the licensed application from contacting the license server. This issue is of particular concern for large global enterprises where the license server and licensed application instances may be on opposite sides of the globe.
The limitations of existing license systems are also apparent in connection with the licensing of individual features associated with licensed applications. In particular, licensing individual features or feature applications is complicated. Moreover, requiring independently deployed feature applications to obtain licenses by implementing a licensing server interface and the necessary enforcement actions, such as making license requests at the appropriate times, responding to license errors and implementing license grace periods, etc., in the application software increases the complexity of the new applications. This in turn increases the time required to bring those applications to market, and increases the cost of developing new applications.